package com.bilibili.service;

import com.bilibili.dto.CartoonDto;
import com.bilibili.entity.PicCartoon;

import java.util.List;

/**
 * 图片展示信息的逻辑层
 * Sandy
 */
public interface PicCartoonService {

    /**
     * @return 拿到所有漫画
     */
    List<PicCartoon> getAllCartoon();

    /**
     * @param categoryId 题材id
     * @return 通过题材id拿到的漫画
     */
    List<PicCartoon> getCartoonByCategoryId(Integer categoryId);

    /**
     * @param regionId 国家id
     * @return 通过国家id拿到的漫画
     */
    List<PicCartoon> getCartoonByRegionId(Integer regionId);

    /**
     *
     * @param cartoonId 漫画id
     * @return 通过漫画id拿到的漫画
     */
    PicCartoon getCartoonById(Integer cartoonId);

    /**
     * @param categoryId 题材id
     * @param regionId   国家id
     * @return 通过题材id和国家id拿到的漫画
     */
    List<PicCartoon> getCartoonByIds(Integer categoryId, Integer regionId);

    /**
     * @param search 搜索关键字
     * @return 通过模糊查询拿到的漫画
     */
    List<PicCartoon> getCartoonBySearch(String search);

    /**
     *
     * @return 拿到5个随机的漫画
     */
    List<PicCartoon> getRandomCartoons();

    /**
     *
     * @param name 题材的名字
     * @return 获得随机五个冒险题材的id
     */
    List<PicCartoon> getRandomAdventureCartoons(String name);

    /**
     *
     * @param picCartoon 用于插入的漫画实体类(其中属性传入时并没有进行检查,会在该1方法进行校验)
     * @return 插入成功后该漫画的id
     */
    PicCartoon addCartoon(PicCartoon picCartoon);

    /**
     *
     * @param name 漫画名字
     * @return 通过漫画名字找到的漫画
     */
    PicCartoon getCartoonByName(String name);

    /**
     * 查询首页需要展示的随机漫画
     *
     * @return 随机漫画
     */
    List<CartoonDto> getIndexRandomCartoons();

    /**
     * 查询首页需要展示的热点漫画
     *
     * @return 随机漫画
     */
    List<PicCartoon> getHotestCartoons();
}
